/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package io.neocdtv.simpleplayer.player.chromecast; import io.neocdtv.simpleplayer.ui.ComboBoxFactory; import io.neocdtv.simpleplayer.ui.CombolistEntry; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.jmdns.JmDNS; import javax.jmdns.ServiceEvent; import javax.jmdns.ServiceInfo; import javax.jmdns.ServiceListener; import javax.swing.DefaultComboBoxModel; /** * * @author xix */ public class ChromecastServiceDiscovery { private final static Logger LOGGER = Logger.getLogger(ChromecastServiceDiscovery.class.getName()); private static final String serviceType = "_googlecast._tcp.local."; private ChromecastServiceDiscovery() { } public static void start() throws IOException { final DefaultComboBoxModel<CombolistEntry> comboBoxModel = ComboBoxFactory.instance(); JmDNS jmDns = JmDNS.create(); jmDns.addServiceListener(serviceType, new ServiceListener() { @Override public void serviceAdded(ServiceEvent event) { final String mDNSName = buildmDNSName(event.getInfo()); LOGGER.log(Level.INFO, "found chromecast device {0} -> adding to list", mDNSName); comboBoxModel.addElement(new CombolistEntry(mDNSName, ChromecastPlayer.instance())); } @Override public void serviceRemoved(ServiceEvent event) { final String mDNSName = buildmDNSName(event.getInfo()); LOGGER.log(Level.INFO, "removing chromecast device {0} from list", mDNSName); System.out.println("Service removed " + event.getInfo()); } @Override public void serviceResolved(ServiceEvent event) { System.out.println("Service resolved" + event.getInfo()); } private String buildmDNSName(ServiceInfo serviceInfo) { return serviceInfo.getName() + "." + serviceInfo.getDomain(); } }); } }